Data communication over wireless channels has become increasingly common. For example, WiFi is used for wireless communication for connections based on the IEEE 802.11 standard. Many other wireless channels may be used such as WiMAX, 3G, mesh networks, or community networks, to name a few. Wireless channels may be lossy. Data may be lost during transmission due to any one of a variety of conditions. For example, weather conditions may be such that the transmission of communication data may be impaired. Likewise, there may be interference to data transmission from a variety of causes such as interference from other devices transmitting on the same channel. Any of these factors may contribute to additional loss in data packet transmission or increased data packet erasure rates.
In end-to-end transport protocols (e.g., Transmission Control Protocol (TCP)) data communication is provided across interconnected networks or devices. In such transport protocols, data to be transmitted is broken into packets of data. The data packets are transmitted to a receiver where the packets are verified and reassembled into the original message. An acknowledgement (ACK) is returned from the receiver to indicate that the data packets were received. If an ACK is not returned, the data packet may have to be re-transmitted. In addition, when the sender does not receive the ACK within a specified period of time, the transport protocol at the sender may timeout. This results in a reduced rate of transmission of packets as the transport protocol interprets the lack of an ACK as congestion in the network. Then, the data packets may be re-transmitted by the transport protocol at the sender.
TCP, being one example of an end-to-end transport protocol, has become the dominant transmission protocol in use. However, TCP also suffers performance degradation, particularly in wireless links due to such problems as high bit error rates, packet erasure, or intermittent connectivity. In addition, data packet erasures and loss may negatively impact performance through TCP timeouts. Such problems are found in other transport layer protocols as well (e.g., UDP, integrated with media streaming or VoIP, or any wireless link-layer design). Congestion may occur in a network when an amount of traffic on a communication link or path exceeds the capacity of the link or path. In such cases, excess data may be discarded or excess data may be buffered until congestion eases. If congestion persists, however, the congestion is controlled by discarding data packets in the buffer to clear the buffer in a packet-switched network.
TCP is typically used for congestion control in the event of packet loss. However, when data packet loss is not due to congestion (e.g., packet loss due to packet erasure or loss of packets in a lossy wireless link), TCP performance may suffer from unnecessary congestion control. Such congestion control may cause TCP to underestimate capacity which results in a reduction of the congestion window and underutilization of available capacity. TCP suffers substantial performance degradation with long latency channels that even have only a 1% residual error rate. The confusion between congestion and non-congestive loss exists for other transport protocols as well.
Moreover, channel impairments or interference may also result in signal to noise ratio (SNR) degradation and bit errors which may in turn result in packet errors or erasures.